Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2014, 20:57
Интересующийся
Отправить личное сообщение для Batska Посмотреть профиль Найти все сообщения от Batska
 
Регистрация: 02.02.2013
Сообщений: 21

Проблема с кроссдоменным запросом
Добрый день, очень нужна помощь. Итак, есть мобильное приложение (CSS, HTML, JS, PhoneGap, нельзя использовать PHP), в нем одна из функций - решение химических реакций, которая должна работать с чужим сайтом nigma.ru. То есть мне надо средствами JS как-то в фоне открывать страницы типа http://nigma.ru/?s=h2+~%7C-+o2, и получать их html-код. Уже читал про кроссдоменные запросы, пробовал что-то с библиотекой easyXDM, читал, что можно через php это все сделать, так проще, но PhoneGap php не поддерживает, то есть в случае с php только свой сервер берет инфу с чужого, потом приложение забирает инфу со своего сервера.
Может кто-нибудь дать рабочий код кроссдоменного запроса или посоветовать что-нибудь рабочее? http://learn.javascript.ru/xhr-crossdomain - указанный здесь пример выдает во всех браузерах "Not Supported"
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2014, 21:52
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

если политика сайта не разрешает такие запросы то без серверного языка не обойтись
Ответить с цитированием
  #3 (permalink)  
Старый 13.08.2014, 00:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Как уже упомянул animhotep, все зависит от сервера с которого нужно взять контент. Но все же есть один способ конечно, не айс, но для простых задач может и подойти “Screen Scraping” с помощью YQL:
function requestCROSContent(url, callback) {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  if ("onload" in script || !("readyState" in script)) {
    script.onload = function() {
      script.onload = script.onreadystatechange = script.onerror = null;
      script.parentNode.removeChild(script);
      script = null;
    }
  } else {
    script.onreadystatechange = function() {
      if (this.readyState == "loaded" || this.readyState == "complete") {
        script.onload = script.onreadystatechange = script.onerror = null;
        script.parentNode.removeChild(script);
        script = null;
      }
    }
  }

  requestCROSContent.__uidTick = requestCROSContent.__uidTick >>> 0;
  var uid = (new Date()).getTime() + ++requestCROSContent.__uidTick;
  window["jsonpCallbackName" + uid] = function(data) {
    delete window["jsonpCallbackName" + uid];
    callback(data && data.results ? data.results[0] : '');
  }

  script.src = 'http' + (/^https/.test(location.protocol) ? 's' : '') +
      '://query.yahooapis.com/v1/public/yql?callback=jsonpCallbackName' + uid +
      '&q=select * from html where url="' + url + '" and xpath="*"';

  document.getElementsByTagName('head')[0].appendChild(script);
}

// запрашиваем страницу
requestCROSContent('ya.ru', function(content) {
  alert(content);
});
Правда этот вариант еще требует доработки, отслеживание ошибок, оптимизации и т.д. Но написанное на коленях думаю даст понять куда копать. Удачи!
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 13.08.2014, 00:38
Интересующийся
Отправить личное сообщение для Batska Посмотреть профиль Найти все сообщения от Batska
 
Регистрация: 02.02.2013
Сообщений: 21

Огромное Вам спасибо! Это работает! А я уже php начал учить и думать над сложной схемой через собственный сервер. Еще раз Вам спасибо, буду пробовать!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с get запросом FearOfTheHamster AJAX и COMET 4 19.02.2014 15:10
проблема с mysql запросом bushstas Серверные языки и технологии 0 29.01.2013 20:34
Проблема с кроссдоменным аяксом nip Общие вопросы Javascript 3 01.11.2012 13:40
Проблема с GET запросом Арсений AJAX и COMET 1 14.05.2010 20:21
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08